// pages/cart/index.js
/**
 * 1、页面加载的时候，从缓存中获取构成购物车数据，渲染到页面中
 *  这些数据，checked=true
 * 2、微信支付
 *  那些人，那些账号可以实现微信支付
 *  1、企业账号
 *  2、企业账号的小程序后台中，必须给开发者添加上白名单
 *      1、一个appid可以同事绑定多个开发者
 *      2、这些开发者就可以共用这个appid和它的开发权限
 * 3、支付按钮
 *  1、先判断缓存中有没有token
 *  2、没有token跳转到授权页面，进行获取token
 *  3、有token
 *  4、创建订单，获取到订单编号
 *  5、完成微信支付
 *  6、手动删除缓存中，已经被选中了得商品
 *  7、删除后的购物车数据填充回缓存中
 *  8、跳转回页面
 */
import {getSetting,chooseAddress,openSetting,showModal,showToast,requestPayment } from "../../utils/asyncWx.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
import { request } from "../../request/index.js"
Page({
    data:{
        address:{},
        cart:[],
        totalPrice:0,
        totalNum:0
    },
    onShow(){
        //1、获取缓存中的收货地址信息
        const address=wx.getStorageSync("address");
        //onshow 1 获取缓存中的购物车数据
        let cart=wx.getStorageSync("cart")||[];
        //过滤后的购物车数组
        cart=cart.filter(v=>v.checked);
        this.setData({address});
        //总价格和总数量
        let totalPrice=0;
        let totalNum=0;
        cart.forEach(v=>{
            totalPrice +=v.num * v.goods_price;
            totalNum += v.num
        })
        this.setData({
            cart,
            totalNum,
            totalPrice,
            address
        });
    },
    //点击支付
    async handleOrderPay(){
        try {
            //判断缓存中有没有token
            const token=wx.getStorageSync("token");
            //判断
            if(!token){
                wx.navigateTo({
                    url:'/pages/auth/index'
                });
                return;
            }
            console.log("已经存在token");
            //3、创建订单
            //3.1准备请求头参数
            //const header={Authorization:token};已封装在resquest中
            //3.2准备请求体参数
            const order_price = this.data.totalPrice;
            const consignee_addr = this.data.address.all;
            const cart=this.data.cart;
            let goods=[];
            cart.forEach(v=>goods.push({
                goods_id:v.goods_id,
                goods_number:v.num,
                goods_price:v.goods_price
            }))
            const orderParams={order_price,consignee_addr,goods}
            //4、准备发送请求，创建订单，获取订单编号
            const {order_number}=await request({url:"/my/orders/create",method:"post",data:orderParams});
            console.log(order_number);
            //5、准备发起预支付的接口
            const {pay} = await request({url:"/my/orders/req_unifiedorder",method:"post",data:{order_number}});
            console.log(pay);
            //6、发起微信支付
            await requestPayment(pay);
            //console.log(res);
            //7、查询后台订单状态
            const res = await await request({url:"/my/orders/chkOrder",method:"post",data:{order_number}});
            console.log(res);
            await wx.showToast({
              title: '支付成功',
            });
            //8、手动删除缓存中已经支付了的商品
            let newCart=wx.getStorageSync("cart");
            newCart=newCart.filter(v=>!v.checked);
            wx.setStorageSync("cart", newCart);
            //8、支付成功跳转到订单界面
            wx.navigateTo({
                url:'/pages/order/index',
            });
        } catch (error) {
            await wx.showToast({
                title: '支付失败',
            })
            console.log(error);
        }
    }
})